package com.rd.controller;


import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.rd.pojo.Blogs;
import com.rd.service.IBlogsService;
import com.rd.util.QiniuOssUtils;
import com.rd.util.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author jianan
 * @since 2024-06-06
 */
@RestController
@RequestMapping("/blogs")
public class BlogsController {
    @Autowired
    private IBlogsService blogsService;

    /**
     * 发布博客
     * @param blogs
     * @param myfile
     * @return
     * @throws IOException
     */
    @PostMapping("/add")
    public R add(Blogs blogs, MultipartFile myfile) throws IOException {
        //参数1：对象
        //参数2：上传的文件
        // 创建七牛云OSS工具实例
        QiniuOssUtils utils = new QiniuOssUtils();
        // 生成唯一标识作为图片的存储键
        String key = UUID.randomUUID().toString();
        // 上传图片到七牛云并获取访问路径
        String path = utils.upload(myfile.getInputStream(), key);
        // 设置员工图片路径
        blogs.setPhoneurl(path);
        //调用save方法，将员工对象存入到数据库中
        boolean b = blogsService.save(blogs); // 保存歌手信息到数据库
        if (b) {
            // 若保存成功，则返回成功信息及员工数据
            return R.ok().setData(blogs).setMsg("添加成功");
        }
        utils.delete(key); // 若保存失败，删除已上传的图片
        return R.fail().setMsg("添加失败");
    }

    /**
     * 浏览博客
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public R list(@RequestParam("page") int page,
                  @RequestParam("limit") int limit) {
        System.out.println("页码:" + page + ",每页显示记录个数:" + limit);
        //创建一个分页插件工具对象，并传入页码和每页显示记录个数
        Page<Blogs> tool = new Page<Blogs>(page, limit);
        //调用mybatis-plus提供的IService接口中提供page方法
        Page<Blogs> blogsPage = blogsService.page(tool);
        //此时已经分页查询成功，只需要从adminPage中获取信息
        long total = blogsPage.getTotal(); //获取总条数
        List<Blogs> list = blogsPage.getRecords();//获取页面是显示的数据
        //将list集合和count的值传递给前端table组件页面上显示
        return R.ok().setData(list).setCount(total);
    }
}
